import Fetch from '../api/request'
// const jwt = require('jsonwebtoken')
// const ZL = require('../../utils/config')

module.exports = class UserController {
  /**
   * 用户登录
   * @param ctx
   * @returns {Promise<void>}
   */
  static async login(ctx) {
    let resultRet = {}

    await Fetch.post({
      url: '/auth/login',
      params: ctx.request.body,
      type: 'query',
      urlPrefix: 'auth',
      ctx
    }).then((result) => {
      resultRet = result
      // resultRet.token = jwt.sign(result.data, ZL.jwt.secret, {expiresIn: '30m'})
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    if (resultRet.data && resultRet.data.token) {
      ctx.request.headers.token = resultRet.data.token
      await Fetch.get({
        url: '/auth/permissions',
        // headers: { 'token': resultRet.data.token },
        urlPrefix: 'auth',
        ctx
      }).then((res) => {
        if (res && res.code === '0') {
          resultRet.permissions = res.data
        }
      }).catch((err) => {
        ctx.errorHandle(ctx, err)
      })
    }
    // 处理返回参数为空
    // if (!resultRet.code) {
    //   ctx.body = ctx.util.ok('', 500, '登录返回参数为空!')
    //   return
    // }
    ctx.body = resultRet
  }

  /**
   * 用户退出
   * @param ctx
   */
  static async logout(ctx) {
    let ret = {}

    await Fetch.post({
      url: '/auth/logout',
      urlPrefix: 'auth',
      ctx
    }).then((res) => {
      ret = res.data
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })

    ctx.body = ret
  }

  static async permissions(ctx) {
    let ret = {}
    await Fetch.get({
      url: '/auth/permissions',
      urlPrefix: 'auth',
      ctx
    }).then((res) => {
      if (res && res.code === '0') {
        ret = res.data
      }
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }
}
